package homework7;

 abstract class Shape{//定义抽象类Shape
    abstract public void calculateArea();//声明抽象方法calculateArea
};
class Circle extends Shape{//定义Circle类，继承自Shape类
     private double radius;//定义Circle类特有属性radius半径
     public  Circle(double radius){
         this.radius=radius;//构造函数初始化半径
     }
     public void calculateArea(){
         System.out.println("Circle Area:"+Math.PI*radius*radius);}//根据圆面积公式，重写了Shape类中的抽象方法calculateArea，实现了计算圆形面积的计算
};
class Rectangle extends Shape{//定义Rectangle类，继承自Shape类
    private double length;
    private double width;//定义Rectangle特有两个属性，长度和宽度
    public Rectangle(double length,double width){
        this.length=length;
        this.width=width;
    }//构造函数初始化长度和宽度
    public void calculateArea(){
        System.out.println("Rectangle Area:"+length*width);}//根据长方形面积公式，重写了Shape类中的抽象方法calculateArea，实现了计算长方形面积的计算
};
public class Shapeapp {
    public  static  void main(String[] args){
        Shape[]shape=new Shape[2];// // 创建一个Shape类型的数组shape，数组长度为2，用于存放不同形状的对象
        shape[0]=new Circle(2.6);//Circle对象赋值给Shape类型的数组第一个元素
        shape[1]=new Rectangle(5,6);//Rectangle对象赋值给Shape类型的数组第二个元素
        for(Shape i:shape){//for循环遍历shape数组
            i.calculateArea();//通过多态性，调用对象的calculateArea方法
        }
    }
}
